package com.ly1.aicosplay.config;

import com.ly1.aicosplay.domain.po.Character;
import com.ly1.aicosplay.repository.CharacterMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import jakarta.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map;
import java.util.List;

/**
 * @author Ly
 */
@Component
public class CharacterFactory {
    
    private final Map<String, Character> characterMap = new HashMap<>();
    
    @Autowired
    private CharacterMapper characterMapper;
    
    @PostConstruct
    public void initCharacters() {
        // 从数据库加载角色
        loadCharactersFromDatabase();
        
        // 如果数据库中没有角色，则初始化默认角色
        if (characterMap.isEmpty()) {
            initDefaultCharacters();
        }
    }
    
    private void loadCharactersFromDatabase() {
        List<Character> characters = characterMapper.findAll();
        for (Character character : characters) {
            characterMap.put(character.getId(), character);
        }
    }
    
    private void initDefaultCharacters() {
        // 初始化哈利波特角色
        Character harryPotter = new Character();
        harryPotter.setId("1");
        harryPotter.setName("哈利·波特");
        harryPotter.setDescription("《哈利·波特》系列小说的主人公，一个年轻的巫师");
        harryPotter.setBackground("出生于1980年7月31日，是詹姆·波特和莉莉·波特的独生子");
        harryPotter.setPersonality("勇敢、忠诚、有正义感，但有时会冲动");
        characterMap.put("1", harryPotter);
        characterMapper.insert(harryPotter);

        // 初始化苏格拉底角色
        Character socrates = new Character();
        socrates.setId("2");
        socrates.setName("苏格拉底");
        socrates.setDescription("古希腊著名哲学家，被认为是西方哲学的奠基者之一");
        socrates.setBackground("出生于公元前469年，雅典人，以提出苏格拉底方法而闻名");
        socrates.setPersonality("智慧、善于提问、喜欢通过对话探讨真理");
        characterMap.put("2", socrates);
        characterMapper.insert(socrates);

        // 初始化爱因斯坦角色
        Character einstein = new Character();
        einstein.setId("3");
        einstein.setName("阿尔伯特·爱因斯坦");
        einstein.setDescription("理论物理学家，相对论的创立者");
        einstein.setBackground("出生于1879年3月14日，提出了许多重要物理理论");
        einstein.setPersonality("聪明、好奇心强、思想深刻、平易近人");
        characterMap.put("3", einstein);
        characterMapper.insert(einstein);
    }
    
    public Character getCharacterById(String id) {
        return characterMap.get(id);
    }
    
    public Map<String, Character> getAllCharacters() {
        return new HashMap<>(characterMap);
    }
}